home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / fido / tllib5_4.lha / nl.h < prev    next >
C/C++ Source or Header  |  1994-05-28  |  6KB  |  174 lines

  1. /***************************************************************************/
  2. /*                        Traplist.library::Master Header File                            */
  3. /*-------------------------------------------------------------------------*/
  4. /*                          © Copyright 1990-93 by Martin J. Laubach                    */
  5. /*                                    All rights reserved                                        */
  6. /*                                                                                                    */
  7. /*                    Inspired by structures by Juergen Hermann                            */
  8. /*                                                                                                    */
  9. /***************************************************************************/
  10. /*
  11.  * $Header: Susan:nl/RCS/nl.h,v 1.31 93/09/09 00:40:20 mjl Exp $
  12.  */
  13. /*-------------------------------------------------------------------------*/
  14. #ifndef NL_NL_H
  15. #define NL_NL_H 1
  16.  
  17. #define TRAPLIST_NAME    "traplist.library"
  18. #define TRAPLIST_VER        5
  19.  
  20. /*-------------------------------------------------------------------------*/
  21. #define NL_VERBATIM 0x8000          /* Don't translate phone numbers in search */
  22.                /* A NLFind() with that flag will give you the phone number */
  23.                /* as it is listed in the nodelist                                     */
  24.  
  25. #define NL_PARSE_INVALID_CHAR        -1                 /* Returned by NLParseAddr */
  26. #define NL_PARSE_INVALID_NUMBER    -2
  27.  
  28. /*-------------------------------------------------------------------------*/
  29. #include "nltags.h"
  30.  
  31. /*-------------------------------------------------------------------------*/
  32. /* Use these macros in NLEnumNode() */
  33.  
  34. #define IS_ZONE(ad,re)     (ad->Zone == ad->Net && ad->Net == re && !ad->Node && !ad->Point)
  35. #define IS_NET(ad,re)     (!ad->Node && !ad->Point)
  36. #define IS_NODE(ad,re)     (ad->Node && !ad->Point)
  37. #define IS_POINT(ad,re)     (ad->Point)
  38. #define IS_REGION(ad,re) (!ad->Node && !ad->Point && re == ad->Net)
  39. #define IS_HUB(ad,hub)   (!ad->Point && ad->Node == hub)
  40.  
  41. /*-------------------------------------------------------------------------*/
  42. typedef struct
  43.     {
  44.     UWORD Zone;
  45.     UWORD Net;
  46.     UWORD Node;
  47.     UWORD Point;
  48.     } Addr;
  49.  
  50. /*-------------------------------------------------------------------------*/
  51. /* This structure is returned by NLFind() and NLIndexFind() */
  52.  
  53. typedef struct
  54.     {
  55.     Addr Node;                          /* node address */
  56.     ULONG Reserved0;
  57.  
  58.     UWORD Region;                      /* region (0 if none) */
  59.     UWORD Hub;                          /* node # of this node's HUB (0 if none) */
  60.     char *System;                      /* node name */
  61.     char *Sysop;                      /* sysop name */
  62.     char *Phone;                      /* phone number */
  63.     char *City;                       /* city and state */
  64.     char *Passwd;                      /* password */
  65.     char *Flags;                      /* nodelist flags */
  66.     LONG Cost;                          /* cost */
  67.     UWORD BaudRate;                  /* baud rate */
  68.     LONG ID;                           /* unique ID (offset into nodeindex) */
  69.  
  70.     ULONG Reserved1;             /* New for version 5 */
  71.     ULONG Reserved2;             /* For compatibility with nodelist.library */
  72.     ULONG Reserved3;
  73.  
  74.     UBYTE Type;                  /* Entry type */
  75.     UBYTE Pad0;
  76.     } NodeDesc;
  77.  
  78. /*-------------------------------------------------------------------------*/
  79. #define NL_ENTRY_NODE    0
  80. #define NL_ENTRY_HOST    1
  81. #define NL_ENTRY_HOLD    2
  82. #define NL_ENTRY_HUB        3
  83. #define NL_ENTRY_PVT        4
  84. #define NL_ENTRY_POINT    5
  85. #define NL_ENTRY_ZONE    6
  86. #define NL_ENTRY_REGION    7
  87. #define NL_ENTRY_DOWN    8
  88. #define NL_ENTRY_MAX        9
  89.  
  90. /*-------------------------------------------------------------------------*/
  91. #ifndef NL_PRIVATE
  92.  
  93. typedef void *Extra;
  94. typedef void *NodeList;
  95.  
  96. #ifdef __STDC__
  97.  
  98. void LibArexx(void);
  99.  
  100. NodeList NLOpen(char *, ULONG);
  101. void NLClose(NodeList);
  102. NodeDesc *NLFind(NodeList, Addr *, ULONG);
  103. int NLAddrComp(Addr *, Addr *);
  104. void NLFreeNode(NodeDesc *);
  105. NodeDesc *NLIndexFind(NodeList, Addr *, ULONG);
  106.  
  107. Extra ExtraOpen(char *);
  108. void *ExtraFromNL(NodeList);
  109. void ExtraClose(Extra);
  110. void *ExtraFind(Extra, Addr *addr, ULONG, ULONG *);
  111. void *ExtraFindLock(Extra, Addr *addr, ULONG, ULONG *);
  112. BOOL ExtraPut(Extra, Addr *, ULONG, int, void *);
  113. BOOL ExtraChange(Extra, Addr *, ULONG, ULONG, void *);
  114. BOOL ExtraDel(Extra, void *);
  115. BOOL ExtraFlush(Extra);
  116. void ExtraLock(Extra);
  117. void ExtraUnlock(Extra);
  118. LONG ExtraEnumNode(Extra, BOOL (*)(Addr *, void *), void *);
  119. LONG ExtraEnumTag(Extra, Addr *, BOOL (*)(void *, ULONG, ULONG, void *), void *);
  120.  
  121. LONG NLEnumNode(NodeList, LONG, Addr *, BOOL (*)(Addr *, ULONG, void *), void *);
  122.  
  123. LONG NLParseAddr(Addr *, char *, Addr *);
  124.  
  125. BOOL NLSubmitNewIndex(NodeList, char *, char *);
  126.  
  127. void ExtraLockTag(Extra, void *);
  128. void ExtraUnlockTag(Extra, void *);
  129.  
  130. void ExtraTagDate(Extra, void *, struct DateStamp *);
  131.  
  132. char **NLGetNodelistNames(NodeList);
  133. void NLFreeNodelistNames(NodeList, char **);
  134.  
  135. #endif /* STDC */
  136.  
  137. #if defined(SASC) || defined(LATTICE)
  138. /*pragma libcall NodelistBase LibArexx 1E 9802*/
  139. #pragma libcall NodelistBase NLOpen 24 0802
  140. #pragma libcall NodelistBase NLClose 2A 801
  141. #pragma libcall NodelistBase NLFind 30 09803
  142. #pragma libcall NodelistBase NLFreeNode 36 801
  143. #pragma libcall NodelistBase NLAddrComp 3C 9802
  144. #pragma libcall NodelistBase NLIndexFind 42 09803
  145. #pragma libcall NodelistBase ExtraFromNL 48 801
  146. #pragma libcall NodelistBase ExtraOpen 4E 801
  147. #pragma libcall NodelistBase ExtraClose 54 801
  148. #pragma libcall NodelistBase ExtraFind 5A A09804
  149. #pragma libcall NodelistBase ExtraPut 60 A109805
  150. #pragma libcall NodelistBase ExtraDel 66 9802
  151. /*pragma libcall NodelistBase ObsoleteOldIndexFind 6C 09803*/
  152. #pragma libcall NodelistBase ExtraFlush 72 801
  153. #pragma libcall NodelistBase ExtraLock 78 801
  154. #pragma libcall NodelistBase ExtraUnlock 7E 801
  155. #pragma libcall NodelistBase ExtraEnumNode 84 A9803
  156. #pragma libcall NodelistBase ExtraChanged 8A 801
  157. #pragma libcall NodelistBase ExtraEnumTag 90 BA9804
  158. #pragma libcall NodelistBase NLEnumNode 96 BA90805
  159. #pragma libcall NodelistBase NLParseAddr 9C A9803
  160. /*pragma libcall NodelistBase NLSubmitNewIndex A2 A9803*/
  161. #pragma libcall NodelistBase ExtraLockTag A8 9802
  162. #pragma libcall NodelistBase ExtraUnlockTag AE 9802
  163. #pragma libcall NodelistBase ExtraChange B4 A109805
  164. #pragma libcall NodelistBase ExtraFindLock BA A09804
  165. /*pragma libcall NodelistBase NLNodelistLibrary0 C0 0*/
  166. /*pragma libcall NodelistBase NLNodelistLibrary1 C6 0*/
  167. #pragma libcall NodelistBase ExtraTagDate CC A9803
  168. #pragma libcall NodelistBase NLGetNodelistNames D2 801
  169. #pragma libcall NodelistBase NLFreeNodelistNames D8 9802
  170. #endif /* SASC */
  171. #endif /* PRIVATE */
  172. #endif /* NL.H */
  173.  
  174.